package leetcode_day._2021._202110;

/**
 * @author yzh
 * @version 1.0
 * @date 2021/10/21 8:57
 * 加一
 * 给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
 * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 * 算法：数组
 *
 */
public class _21_61 {

    public int[] plusOne(int[] digits) {
        int carry = 1, len = digits.length;
        for (int i = len - 1; i >= 0; i--) {
            int tmp = digits[i] + carry;
            carry = tmp > 9 ? 1 : 0;
            digits[i] = tmp % 10;
        }
        if (digits[0] == 0) {
            int[] tmps = digits;
            digits = new int[len + 1];
            digits[0] = 1;
            System.arraycopy(tmps, 0, digits, 1, len);
        }
        return digits;
    }

}
